﻿using System.Text.Json.Serialization;

namespace Aurora.AI.Abstractions.Chats.Dtos;

/// <summary>
/// web search函数调用的定义。
/// </summary>
public class AuroraAIToolWebSearchDefinition
{
    /// <summary>
    /// 网络搜索功能默认为关闭状态（False）。当启用搜索（设置为 True）时，系统会自动判断是否需要进行网络检索，并调用搜索引擎获取相关信息。检索成功后，搜索结果将作为背景信息输入给大模型进行进一步处理。每次网络搜索大约会增加1000个 tokens 的消耗。
    /// </summary>
    [JsonPropertyName("enable")]
    public bool Enable { get; set; }

    /// <summary>
    /// 使用 search_query 参数可以自定义搜索内容，提升搜索结果的相关性和精确度。 如果不传 search_query 参数，系统将根据用户的消息自动进行网页检索
    /// </summary>
    [JsonPropertyName("search_query")]
    public string SearchQuery { get; set; }
    
    /// <summary>
    /// 启用 search_result 参数允许用户获取详细的网页搜索来源信息，包括来源网站的图标、标题、链接、来源名称以及引用的文本内容。
    /// </summary>
    [JsonPropertyName("search_result")]
    public bool SearchResult { get; set; }
    
    /// <summary>
    /// 使用 search_prompt 允许用户自定义模型引用搜索结果的方式，prompt 必须包含 {search_result} 表示搜索结果
    /// </summary>
    [JsonPropertyName("search_prompt")]
    public string SearchPrompt { get; set; }
}